From: Maxim Ermilov Date: Mon, 8 Mar 2010 22:50:49 +0000 (+0300) Subject: Look at current mouse position for dropping X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~10344 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=765779272fa2a532cd4c070516a9f6d4bd48d9a2;p=gnome-shell.git Look at current mouse position for dropping Previously we used the top-left corner which was not intuitive, particularly when dragging partially opaque actors. https://bugzilla.gnome.org/show_bug.cgi?id=607821 --- diff --git a/js/ui/dnd.js b/js/ui/dnd.js index 9188cadee..717ea18bd 100644 --- a/js/ui/dnd.js +++ b/js/ui/dnd.js @@ -59,7 +59,7 @@ _Draggable.prototype = { return false; }, - + _grabActor: function() { Clutter.grab_pointer(this.actor); this._onEventId = this.actor.connect('event', @@ -220,8 +220,7 @@ _Draggable.prototype = { // we have to temporarily hide this._dragActor. this._dragActor.hide(); let target = this._dragActor.get_stage().get_actor_at_pos(Clutter.PickMode.ALL, - stageX + this._dragOffsetX, - stageY + this._dragOffsetY); + stageX, stageY); this._dragActor.show(); while (target) { if (target._delegate && target._delegate.handleDragOver) { @@ -230,8 +229,8 @@ _Draggable.prototype = { // We can check the return value of the function and break the loop if it's true if we don't want // to continue checking the parents. target._delegate.handleDragOver(this.actor._delegate, this._dragActor, - (stageX + this._dragOffsetX - targX) / target.scale_x, - (stageY + this._dragOffsetY - targY) / target.scale_y, + (stageX - targX) / target.scale_x, + (stageY - targY) / target.scale_y, event.get_time()); } target = target.get_parent();